VOS - SMS versturen
Home

VOS - SMS versturen

VOS - SMS versturen

Als de gebruiker is aangemeld moet die vanuit de VOS app kunnen telefoneren. We installeren daarvoor een plugin (Cordova - sms).

Methoden in index.js

De methoden om te sms'en plaatsen we in het index.js bestand dat door Cordova werd aangemaakt. De reden hiervoor is dat die functionaliteit slechts beschikbaar in de app en niet op website. Bevendien moet die functionaliteit slechts toegankelijk zijn als de 'device ready' notificatie ontvangen is.

De methode om te sms'en roept twee callback functies op. De succes methode wordt uitgevoerd als de bel plugin geactiveerd kan worden, de error callback methode als de plugin niet geactiveerd kan worden.

var smsSend = function (number, message) {
    // CONFIGURATION
    var options = {
        replaceLineBreaks: false, // true to replace \n by a new line, false by default
        android: {
            intent: 'INTENT'  // send SMS with the native android SMS messaging
            // intent: '' // send SMS without open any other app
        }
    };

    var success = function () {
        alert('SMS is verstuurd!');
    };

    var error = function (e) {
        alert('SMS is niet verstuurd:' + e);
    };
    if (typeof sms === 'undefined' || typeof sms.send === 'undefined') {
        alert('SMS send is undefined. Would have sent error');
    } else {
        sms.send(number, message, options, success, error);
    }
};

In de SMS render methode wordt een knop aangemaakt als de gebruiker is aangemeld. Als de gebruiker op die knop klikt wordt de sendSMS methode in index.js opgeroepen. Is de gebruiker niet aangemeld wordt het telefoonnummer getoond.

var render = {
    'identity': function (querySelector) {
        ...
    },
    'procedure': {
        'make': function (procedureCode) {
           ...
        },
        'TEL': function (item, message) {
           ...
        },
        'SMS': function (item, message) {
            // Het telefoonnummer van directie, secretariaat, ... is afhankelijk van de plaats
            var phoneNumber = getPhoneNumber(item.phoneNumber);
            if (vos.model.identity.loggedIn) {
                var buttonElement = makeTileButton('Tel', 'icon-send');
                buttonElement.addEventListener('click', function () {
                    vos.smsPrepare(phoneNumber, message);
                });
                return buttonElement;
            } else {
                return makeTextElement(item.code + ' ' + phoneNumber, 'P');
            }
        },

Tenslotte maken we het sms bericht aan in de methode smsPrepare in de vos namespace:

/**
 * Created by jefin on 20/05/2017.
 */
var vos = {
    'model' : {
       ...
    },
    'setModel': function () {
       ...
    },
    /**
     * Geolocatie van de telefoon ophalen
     *
     */
    getPosition: function () {
       ...
    },
    /**
     * De dichtsbijzijnde organisatie ophalen.
     * https://stackoverflow.com/questions/21279559/geolocation-closest-locationlat-long-from-my-position
     */
    setMyLocation: function () {
       ...
    },
    /**
     * de property loggedIn van identity op false zetten
     * en role op GAST
     */
    logout: function () {
       ...
    },
    /**
     * Ga naar de floor met de opgegeven view id en toon de tekst
     * in title in het h1 element.
     *
     * @param {string} view text id van de floor die getoond moet worden.
     * @param {string} title tekst die in het h1 element geplaatst moet worden.
     */
    navigateTo: function (view, title) {
       ...
    },
    /**
     * Voorbereiding versturen sms.
     *
     * @param {string} number telefoonnummer waarnaar sms gestuurd moet worden.
     * @param {string} messageText boodschap die verstuurd zal worden.
     */
    smsPrepare: function (number, messageText) {
        // number = '0486788723';
        var message = messageText + '\n' +
            vos.model.identity.firstName + ' ' + vos.model.identity.lastName + '\n' +
            vos.model.myLocation.name + '\n' +
            vos.model.myLocation.street + '\n' +
            vos.model.myLocation.postalCode + ' ' + vos.model.myLocation.city + '\n' +
            number;
        smsSend(number, message);
    },
    settings: function () {
       ... 
    }
};

JI
2017-12-16 18:17:03